import configparser
import os

import yaml

'''
读文件相关的操作
'''


def get_project_path():
    '''
    获取当前工程路径：
    :return: C:\ApiAutoTest46\zonghe\
    '''
    # 当前文件的路径  C:\ApiAutoTest46\zonghe\caw\ReadFile.py
    cf = os.path.realpath(__file__)
    # print("cf=", cf)
    # 上一级目录 C:\ApiAutoTest46\zonghe\caw
    cd = os.path.dirname(cf)
    # print("cd=", cd)
    # 再上一级目录 C:\ApiAutoTest46\zonghe
    cd = os.path.dirname(cd) + "\\"
    # print("cd=", cd)
    return cd


def read_ini(file_path, key):
    '''
    读取ini文件
    :param file_path: 文件路径
    :param key：ini中的key
    :return: key对应的value
    '''
    file_path = get_project_path() + file_path
    # 创建一个实例
    cp = configparser.ConfigParser()
    # 使用read方法读文件
    cp.read(file_path)
    # 获取section下key对应的value
    return cp.get("env", key)


def read_yaml(file_path):
    '''
    读yaml文件
    :param file_path: 文件路径
    :return: 文件内容
    '''
    file_path = get_project_path() + file_path
    with open(file_path, mode='r', encoding='utf-8') as f:
        # 读文件
        content = f.read()
        # 使用yaml提供的load方法转成yaml格式的
        ret = yaml.load(content, Loader=yaml.FullLoader)
        # 返回列表，列表中的元素为字典
        return ret


# 测试代码，用完删除 (main + 回车)
if __name__ == '__main__':
    # C:\ApiAutoTest46\zonghe\ 自动获取
    url = read_ini(r"test_env\env.ini", "url")
    print(url)
    db = read_ini(r"test_env\env.ini", "db")
    print(db)
    print(type(db))  # 字符串
    temp = eval(db)  # 字符串解析成字典
    print(temp)
    print(type(temp))
    ret = read_yaml(r"test_data\resgister_fail.yaml")
    print(ret)
